<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>


<script>
  //wrapped into
  //进行了一次网络请求，结果是aaa   ->自己处理（10行）
  //把处理结果再进行处理  把结果进行拼接1111
  //处理把上一步结果拼接2222
  // new Promise((resolve, reject) => {
  //     setTimeout(()=>{
  //         resolve('aaa')
  //     },1000)
  // }).then(res=>{
  //     //1.自己处理10行
  //     console.log(res,'第一层的10行处理');
  //
  //     //2.对结果进行第一次处理
  //     return new Promise((resolve, reject) => {
  //         resolve(res + '111')
  //     })
  // }).then(res=>{
  //     console.log(res,'第二次10行的处理结果')
  //     return new Promise((resolve, reject) => {
  //         resolve(res + '222')
  //     })
  // }).then(res=>{
  //     console.log(res + '第三层处理结果')
  // })


  //便捷写法   return Promise(resolve => resolve(结果))
  // new Promise((resolve, reject) => {
  //     setTimeout(()=>{
  //         resolve('aaa')
  //     },1000)
  // }).then(res=>{
  //     console.log(res,'第一层的10行处理');
  //     return Promise.resolve(res + '111')
  // }).then(res=>{
  //     console.log(res,'第二次10行的处理结果')
  //     return Promise.resolve(res + '222')
  // }).then(res=>{
  //     console.log(res + '第三层处理结果')
  // })


  //如果在链式调用的过程中遇到了错误回调
  // new Promise((resolve, reject) => {
  //     setTimeout(()=>{
  //         resolve('aaa')
  //     },1000)
  // }).then(res=>{
  //     console.log(res,'第一层的10行处理');
  //     return Promise.reject(res + '111')
  // }).then(res=>{
  //     console.log(res,'第二次10行的处理结果')
  //     return Promise.resolve(res + '222')
  // }).then(res=>{
  //     console.log(res + '第三层处理结果')
  // }).catch(err=>{
  //     console.log(err)
  // })


  //使用throw抛出异常
  new Promise((resolve, reject) => {
      setTimeout(()=>{
          resolve('aaa')
      },1000)
  }).then(res=>{
      console.log(res,'第一层的10行处理');
      throw 'error message'
  }).then(res=>{
      console.log(res,'第二次10行的处理结果')
      return Promise.resolve(res + '222')
  }).then(res=>{
      console.log(res + '第三层处理结果')
  }).catch(err=>{
      console.log(err)
  })


  //链式调用再次简写 省略掉Promise.resolve
  // new Promise((resolve, reject) => {
  //     setTimeout(()=>{
  //         resolve('aaa')
  //     },1000)
  // }).then(res=>{
  //     console.log(res,'第一层的10行处理');
  //     return res + '111'
  // }).then(res=>{
  //     console.log(res,'第二次10行的处理结果')
  //     return res + '222'
  // }).then(res=>{
  //     console.log(res + '第三层处理结果')
  // }).catch(err =>{
  //     console.log(err)
  // })






</script>
</body>
</html>